# output.manifest

- **类型：** `string | boolean`
- **默认值：** `false`

是否生成 manifest 文件，该文件包含所有构建产物的信息、以及[入口模块](/config/source/entry)与构建产物间的映射关系。

当 `output.manifest` 设置为 `true` 时，Rsbuild 会在构建后生成一个 `manifest.json` 文件。当 `output.manifest` 的值是一个字符串时，它将作为 manifest 文件的名称或路径。

## 输出内容

manifest 文件默认输出的结构为：

```ts
type FilePath = string;

type ManifestList = {
  entries: {
    /** key 为 entry 名称，对应 Rsbuild 的 source.entry 配置 */
    [entryName: string]: {
      initial?: {
        js?: FilePath[];
        css?: FilePath[];
      };
      async?: {
        js?: FilePath[];
        css?: FilePath[];
      };
      /** 当前 entry 关联的 HTML 页面 */
      html?: FilePath[];
      /** 和当前 entry 相关的其他资源（如 png、svg、source map 等） */
      assets?: FilePath[];
    };
  };
  /** 铺平的所有 assets */
  allFiles: FilePath[];
};
```

## 基础示例

添加以下配置来开启：

```js
export default {
  output: {
    manifest: true,
  },
};
```

当构建完成后，会自动生成 `dist/manifest.json` 文件：

```json
{
  "allFiles": [
    "/static/css/index.a11cfb11.css",
    "/static/js/index.c586cd5e.js",
    "/index.html",
    "/static/js/index.c586cd5e.js.LICENSE.txt"
  ],
  "entries": {
    "index": {
      "initial": {
        "js": ["/static/js/index.c586cd5e.js"],
        "css": ["/static/css/index.a11cfb11.css"]
      },
      "assets": ["/static/js/index.c586cd5e.js.LICENSE.txt"],
      "html": ["/index.html"]
    }
  }
}
```

## 设置路径

`output.manifest` 可以是一个相对于 `dist` 目录的路径，比如输出为 `dist/static/my-manifest.json`：

```js
export default {
  output: {
    manifest: './static/my-manifest.json',
  },
};
```
